package com.shujia.four;


import java.util.ArrayList;
import java.util.List;

/*
泛型通配符<?>
使用场景：在集合作为形参的方法中
任意类型，如果没有明确，那么就是Object以及任意的Java类了
? extends E
向下限定，E及其子类
? super E
向上限定，E及其父类
 */
public class GenericDemo4 {

    public static void main(String[] args) {
        GenericDemo4 demo = new GenericDemo4();
        List<Animal> list = new ArrayList();
        demo.jump(list);

        List<Dog> list1 = new ArrayList();
        demo.jump1(list1);

        List<Dog> list2 = new ArrayList();
        demo.jump2(list2);

    }

    public <E extends Animal> void jump1(List<E> list) {


    }

    public void jump(List<? extends Animal> list) {
        for (Object obj : list) {
            System.out.println(obj);
        }
    }

    // 只能是Dog和Dog的父类类型
    public void jump2(List<? super Dog> list) {
        for (Object obj : list) {
            System.out.println(obj);
        }
    }
}
